package com.yigerende.web.admin;

import com.yigerende.model.User;
import com.yigerende.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import javax.servlet.http.HttpSession;
/*
* 登陆页面
* */
@Controller
@RequestMapping("/admin")
public class LoginController {



    @Autowired
    private UserService userService;


    //跳转到登录页面(到主页面用GetMapping)
    @GetMapping
    public String loginPage(){
        return "admin/login";
    }


    //登录方法
    @PostMapping("/login")
    public String login(@RequestParam String username,
                        @RequestParam String password,
                        HttpSession session,
                        RedirectAttributes attributes){
        //控制层传递用户输入的用户名和密码，传递到了service的接口，里面的实现方法，传递到了dao层，到层传递到了数据库
        User user = userService.checkUser(username,password);
        if(user != null){//不等于空,说明查找到用户名和密码了
            //密码设置为空，不能把密码传到前面页面显示
            user.setPassword(null);
            //把查找到的数据放到session里面(用来显示到网页)
            session.setAttribute("user",user);
            //登陆成功显示登陆成功页面
            return "admin/index";
        }else{//用户密码不正确
            //把错误信息放到这个attributes里面,就可以显示出来
            attributes.addFlashAttribute("message","用户名或密码错误");
            //返回到登录页面,再次登录就会有问题，所以用重定向redirect:,会自动弹到loginPage()这个方法就是到登录页面的
            return "redirect:/admin";
        }

    }



    //注销用户(到主页面用GetMapping)
    @GetMapping("/logout")
    public String logout(HttpSession session){
        //注销退出要吧session里面的内容(用户名和密码)清空
        session.removeAttribute("user");
        //也是重定向，会自动调用loginPage()这个方法，弹到登陆页面
        return "redirect:/admin";
    }
}
